package com.cssw.fyzb.busi.service.task;

import com.cssw.fyzb.core.model.dodb.*;
import com.cssw.fyzb.core.model.vo.task.CollecTaskVo;
import com.cssw.fyzb.core.model.vo.task.DailyTasksVo;
import com.cssw.fyzb.core.model.vo.task.OnDayTaskVo;
import com.ydn.dbframe.plugin.activerecord.Page;

import java.util.List;


public interface TaskService {

    //任务中心
    Page<Task> taskList(Long userId, int pageNumber, int pageSize);

    //历史任务
    Page<Task> oldTask(Long userId, int pageNumber, int pageSize);

    //领取任务
    CollecTaskVo collecTask(Long userId, Long taskId, String pwd);

    //我的任务
    Page<RuleInst> myTaskList(Long userId, int pageNumber, int pageSize);

    //我的今日任务
    Page<RuleInst> myTaskRecord(Long userId, int pageNumber, int pageSize);

    //今日进度
    String todayProgress(Long userId);

    //一键结算
    void settlement(Long userId);

    //未结算
    String unsettledValue(Long userId);


    /**
     * 任务执行记录
     *
     * @return com.ydn.dbframe.plugin.activerecord.Page<com.cssw.fyzb.core.model.dodb.TaskExec>
     * @Param [userId, status] 1未结算 2已结算 3过期
     **/
    Page<TaskExec> listTaskExec(Long userId, String status, int pageNumber, int pageSize);

    /**
     * 每日任务
     *
     * @return
     * @Param
     **/
    String dailyTasks(Long userId);

    /**
     * 获取执行日志
     *
     * @return com.cssw.fyzb.core.model.dodb.TaskExec
     * @Param [userId, instId]
     **/
    TaskExec getTaskExec(Long userId, Long instId);

    /**
     * mongo 获取今日时长
     *
     * @return
     * @Param
     **/
    Integer getTaskStatMo(Long userId);

    /**
     * 看视频统计
     *
     * @param userId
     * @param advertId
     */
    void addVideoCount(Long userId, String advertId);

    Integer myClaim(Long userId, Long taskId);

    void newVideoDay(Integer timeLong, Long userId);

    /**
     * 判断用户是否设置了交易密码
     *
     * @return java.lang.String
     * @Param [userId]
     **/
    String userTransactionPwd(Long userId);

    /**
     * 用户观看每日任务广告
     *
     * @return
     * @Param
     **/
    void viewDailyTask(Long userId, String advert);


    OnDayTaskVo onDayTask(Long userId);

    List<AdNumPrice> listAdNumPrice();

    List<TurntableNumPrice> listTurntableNumPrice();
}
